﻿Shader "Aimin/Double Transparent"
{
    Properties
    {
        _MainTex ("Main Texture", 2D) = "white" { }
        _SecondTex ("Texture", 2D) = "white" { }
        _DisplacementTex ("Displacemen Texture", 2D) = "white" { }

        _Magnitude ("Magnitude", Range(0, 1)) = 0
    }
    SubShader
    {
        Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }

        Pass
        {
            Blend SrcAlpha OneMinusSrcAlpha
            // Cull Front

            CGPROGRAM

            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            sampler2D _SecondTex;
            sampler2D _DisplacementTex;
            float _Magnitude;

            struct appdata
            {
                float4 vertex: POSITION;
                float2 uv: TEXCOORD0;
            };

            struct v2f
            {
                float2 uv: TEXCOORD0;
                float4 vertex: SV_POSITION;
            };

            
            v2f vert(appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            float4 frag(v2f i): SV_Target
            {
                // sample the texture
                
                float2 disUV = i.uv + _Time.x * 2;
                float2 disp = tex2D(_DisplacementTex, disUV).xy;
                disp = (disp * 2 - 1) * _Magnitude;

                float4 bg = tex2D(_SecondTex, i.uv + disp);

                float4 main = tex2D(_MainTex, i.uv);

                float4 col = lerp(bg, main, main.a);

                return col;
            }
            ENDCG

        }

        // Pass
        // {
        //     Blend SrcAlpha OneMinusSrcAlpha

        //     // Cull Back

        //     CGPROGRAM

        //     #pragma vertex vert
        //     #pragma fragment frag
        //     #include "UnityCG.cginc"

        //     sampler2D _MainTex;
        //     float4 _MainTex_ST;

        

        //     struct appdata
        //     {
        //         float4 vertex: POSITION;
        //         float2 uv: TEXCOORD0;
        //     };

        //     struct v2f
        //     {
        //         float2 uv: TEXCOORD0;
        //         float4 vertex: SV_POSITION;
        //     };

        
        //     v2f vert(appdata v)
        //     {
        //         v2f o;
        //         o.vertex = UnityObjectToClipPos(v.vertex);
        //         o.uv = v.uv;
        //         return o;
        //     }

        //     float4 frag(v2f i): SV_Target
        //     {
        //         // sample the texture
        //         float4 tex1 = tex2D(_MainTex, i.uv);
        //         return tex1;
        //     }
        //     ENDCG

        // }

    }
}
